导航菜单
首页 >  用尽洪荒之力学习Flask源码  > python flask的使用

python flask的使用

flask 是比较流行的Web框架flask的优缺点我不作论述,读者可自行搜索首先安装$ pip install flask如果读者是使用 pycharm 进行开发的可以在新建项目时,在左侧选择一个flask项目来新建,成功后可以对其的项目结构进行了解。本人不建议直接使用pycharm进行flask的项目新建,原因是不能对其中代码进行修改调试。

安装成功后,新建一个app.py

from flask import Flaskfrom flask import requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():return 'Home'@app.route('/signin', methods=['GET'])def signin_form():return '''

Sign In

'''@app.route('/signin', methods=['POST'])def signin():# 需要从request对象读取表单内容:if request.form['username']=='admin' and request.form['password']=='password':return 'Hello, admin!'return 'Bad username or password.'if __name__ == '__main__':app.run()

运行 app.py$ python app.py

Running on http://127.0.0.1:5000/就可以进行操作测试了

以上是最基本的用法,下面说一下其他的操作首先把运行的入口与请求分离开在根目录下新建 script.py

from app import appif __name__ == '__main__':app.run(host='xxx.xx.xx.xx', debug=True)# app.run()

新建名叫 app 的模块

image.png到此我们把对 flask 的配置代码,全部在 init.py 中进行处理

from flask import Flaskapp = Flask(__name__, template_folder='../templates', static_folder='../static')app.config.from_object(Config).................. 省略一些代码

(插一句:如果发生找不到资源文件的问题发生,通过template_folder='../templates', static_folder='../static' 指定资源路径)

到此有的读者会发现,对请求的处理要分离去到哪里?先看一下下面的结构

image.png

可以看出我们的请求有 user用户的模块,动态trends的模块。我们分别在user和trends中处理相关的模块请求。既然分开,那么请求的地址也可以通过不同的前缀来区别对应的模块http://127.0.0.1:5000/user----- 对应 userhttp://127.0.0.1:5000/trends ----- 对应 trendsflask 对此需求也做了相关的处理user = Blueprint('user', __name__)trends = Blueprint('trends', __name__)通过上面的代码,我们需要更改一下相应的代码

user = Blueprint('user', __name__)# 此处的对应请求地址是 http://127.0.0.1:5000/user/home@user.route('/home', methods=['GET', 'POST'])def home():return 'Home'

在我们使用 Blueprint 函数时 需要在 flask 中注册一下,我们在app模块init.py 中增加以下代码

app.register_blueprint(user, url_prefix='/user')app.register_blueprint(trends, url_prefix='/trends')

到此我们完成了简单的分离处理。

在项目中,我们有的时候需要对所有的请求进行监控。flask也有相关的处理方法我们在app模块init.py 中增加以下代码

# 处理第一个请求之前运行.@app.before_first_requestdef bf_first_request():print('----------------------------------- 此处处理第一次请求之前')# 在处理每次请求之前运行.@app.before_requestdef bf_request():print('----------------------------------- before_request ', request.headers) # 在每次请求之后运行 (请求没有异常)@app.after_requestdef af_request(param):print(f'----------------------------------- after_request {param}')return param# 每一个请求之后运行,即使遇到了异常@appteardown_request

第一次写文章,python也是刚刚学习。勿喷

相关推荐: